﻿Imports System.Collections.Generic
Imports System.Data
Imports Biz
Imports System.Data.SqlClient


''' <summary>
''' Clase de la capa de acceso a datos para el manejo de la entidad Busqueda
''' </summary>
''' <remarks></remarks>
Public Class DALBusqueda

    Private Shared m_Instance As DALBusqueda
    Private Shared m_Semaforo As New Object
    Private m_TDGBusqueda As TDGBusqueda


    Public Function Insert(obj As cBusqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            iResultado = m_TDGBusqueda.Insert(database.Conexion, obj.Busq_Titulo, _
                                                                obj.Busq_FCreacion, _
                                                                obj.Busq_FInicioProg, _
                                                                obj.Busq_FFinProg, _
                                                                obj.Busq_Detalle, _
                                                                obj.Busq_TelPostulaciones, _
                                                                obj.Busq_MailPostulaciones, _
                                                                obj.oDepartamento.Dep_Codigo, _
                                                                obj.oEmpleadoRRHH.Emp_Legajo, _
                                                                obj.oEmpleadoSectorSel.Emp_Legajo, _
                                                                obj.oEstado_Busqueda.EstB_Codigo, _
                                                                obj.Busq_Numero)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloAlta(ex)
        End Try

    End Function

    Public Function Update(obj As cBusqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGBusqueda.Update(database.Conexion, obj.Busq_Numero, obj.Busq_Titulo, _
                                                                obj.Busq_FCreacion, _
                                                                obj.Busq_FInicioProg, _
                                                                obj.Busq_FFinProg, _
                                                                obj.Busq_Detalle, _
                                                                obj.Busq_TelPostulaciones, _
                                                                obj.Busq_MailPostulaciones, _
                                                                obj.oDepartamento.Dep_Codigo, _
                                                                obj.oEmpleadoRRHH.Emp_Legajo, _
                                                                obj.oEmpleadoSectorSel.Emp_Legajo, _
                                                                obj.oEstado_Busqueda.EstB_Codigo)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloEditar(ex)
        End Try
    End Function

    Public Function Delete(obj As cBusqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGBusqueda.Delete(database.Conexion, obj.Busq_Numero)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloBaja(ex)
        End Try

    End Function

    Public Function Finalizar(obj As cBusqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGBusqueda.Finalizar(database.Conexion, obj.Busq_Numero)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloEditar(ex)
        End Try

    End Function

    Public Function Suspender(obj As cBusqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGBusqueda.Suspender(database.Conexion, obj.Busq_Numero)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloEditar(ex)
        End Try

    End Function

    Public Function Activar(obj As cBusqueda) As Boolean
        Dim iResultado As Int16 = 0
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            m_TDGBusqueda.Activar(database.Conexion, obj.Busq_Numero)
            database.Desconectar()

            Return (iResultado > 0)
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloEditar(ex)
        End Try

    End Function

    Public Function SelectAll() As Collection
        Dim dr As SqlDataReader
        Dim colObjetos As Collection
        Dim objAux As cBusqueda
        Dim database As cDatabase


        Try
            database = cDatabase.Instance

            database.Conectar()
            dr = m_TDGBusqueda.FindAll(database.Conexion)

            If dr.HasRows Then
                colObjetos = New Collection
                Do While dr.Read
                    objAux = New cBusqueda

                    objAux.Busq_Numero = Utils.Convert.ToInt16(dr.GetValue(0))
                    objAux.Busq_Titulo = Utils.Convert.ToStr(dr.GetValue(1))
                    objAux.Busq_FCreacion = Utils.Convert.ToDateTime(dr.GetValue(2))
                    objAux.Busq_FInicioProg = Utils.Convert.ToDateTime(dr.GetValue(3))
                    objAux.Busq_FFinProg = Utils.Convert.ToDateTime(dr.GetValue(4))
                    objAux.Busq_Detalle = Utils.Convert.ToStr(dr.GetValue(5))
                    objAux.Busq_TelPostulaciones = Utils.Convert.ToStr(dr.GetValue(6))
                    objAux.Busq_MailPostulaciones = Utils.Convert.ToStr(dr.GetValue(7))
                    objAux.oDepartamento.Dep_Codigo = Utils.Convert.ToInt16(dr.GetValue(8))
                    objAux.oEmpleadoRRHH.Emp_Legajo = Utils.Convert.ToInt16(dr.GetValue(9))
                    objAux.oEmpleadoSectorSel.Emp_Legajo = Utils.Convert.ToInt16(dr.GetValue(10))
                    objAux.oEstado_Busqueda.EstB_Codigo = Utils.Convert.ToInt16(dr.GetValue(11))
                    objAux.DVH = Utils.Convert.ToInt32(dr.GetValue(12))
                    objAux.oDepartamento.Dep_Descrip = Utils.Convert.ToStr(dr.GetValue(13))
                    objAux.oEmpleadoRRHH.Emp_NombreAp = Utils.Convert.ToStr(dr.GetValue(14))
                    objAux.oEmpleadoRRHH.Emp_Mail = Utils.Convert.ToStr(dr.GetValue(15))
                    objAux.oEmpleadoRRHH.Emp_NroInterno = Utils.Convert.ToStr(dr.GetValue(16))
                    objAux.oEmpleadoSectorSel.Emp_NombreAp = Utils.Convert.ToStr(dr.GetValue(17))
                    objAux.oEmpleadoSectorSel.Emp_Mail = Utils.Convert.ToStr(dr.GetValue(18))
                    objAux.oEmpleadoSectorSel.Emp_NroInterno = Utils.Convert.ToStr(dr.GetValue(19))

                    colObjetos.Add(objAux)
                Loop
                dr.Close()
            Else
                colObjetos = Nothing
            End If

            database.Desconectar()

            Return colObjetos
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloConsultar(ex)
        End Try
    End Function

    Public Function Sel(obj As cBusqueda) As cBusqueda
        Dim dr As SqlDataReader
        Dim database As cDatabase

        Try
            database = cDatabase.Instance

            database.Conectar()
            dr = m_TDGBusqueda.Find(database.Conexion, obj.Busq_Numero)

            If dr.HasRows Then

                dr.Read()

                obj.Busq_Numero = Utils.Convert.ToInt16(dr.GetValue(0))
                obj.Busq_Titulo = Utils.Convert.ToStr(dr.GetValue(1))
                obj.Busq_FCreacion = Utils.Convert.ToDateTime(dr.GetValue(2))
                obj.Busq_FInicioProg = Utils.Convert.ToDateTime(dr.GetValue(3))
                obj.Busq_FFinProg = Utils.Convert.ToDateTime(dr.GetValue(4))
                obj.Busq_Detalle = Utils.Convert.ToStr(dr.GetValue(5))
                obj.Busq_TelPostulaciones = Utils.Convert.ToStr(dr.GetValue(6))
                obj.Busq_MailPostulaciones = Utils.Convert.ToStr(dr.GetValue(7))
                obj.oDepartamento.Dep_Codigo = Utils.Convert.ToInt16(dr.GetValue(8))
                obj.oEmpleadoRRHH.Emp_Legajo = Utils.Convert.ToInt16(dr.GetValue(9))
                obj.oEmpleadoSectorSel.Emp_Legajo = Utils.Convert.ToInt16(dr.GetValue(10))
                obj.oEstado_Busqueda.EstB_Codigo = Utils.Convert.ToStr(dr.GetValue(11))
                obj.DVH = Utils.Convert.ToInt32(dr.GetValue(12))
                obj.oDepartamento.Dep_Descrip = Utils.Convert.ToStr(dr.GetValue(13))
                obj.oEmpleadoRRHH.Emp_NombreAp = Utils.Convert.ToStr(dr.GetValue(14))
                obj.oEmpleadoRRHH.Emp_Mail = Utils.Convert.ToStr(dr.GetValue(15))
                obj.oEmpleadoRRHH.Emp_NroInterno = Utils.Convert.ToStr(dr.GetValue(16))
                obj.oEmpleadoSectorSel.Emp_NombreAp = Utils.Convert.ToStr(dr.GetValue(17))
                obj.oEmpleadoSectorSel.Emp_Mail = Utils.Convert.ToStr(dr.GetValue(18))
                obj.oEmpleadoSectorSel.Emp_NroInterno = Utils.Convert.ToStr(dr.GetValue(19))

                dr.Close()

            Else
                obj = Nothing
            End If

            database.Desconectar()

            Return obj
        Catch ex As Exception
            Throw New Excepciones.BusquedaFalloBuscar(ex)
        End Try
    End Function

    Public Shared Function Instance() As DALBusqueda
        If m_Instance Is Nothing Then
            SyncLock m_Semaforo
                If m_Instance Is Nothing Then
                    m_Instance = New DALBusqueda
                End If
            End SyncLock
        End If

        Return m_Instance
    End Function

    Private Sub New()
        m_TDGBusqueda = TDGBusqueda.Instance()
    End Sub

End Class
